import { getWeChatConfig } from '@/api/eWechat'
import store from '@/store'
export default (eWechatAgentTypeCode, eWechatSdkName, jsApiList = []) => {
  return new Promise((resolve, reject) => {
    getWeChatConfig({ url: window.location.href, eWechatAgentTypeCode }).then(({ flag, data }) => {
      if (flag) {
        const wxConfig = data
        !window?.[eWechatSdkName]?.config && store.dispatch('eWechat/setWxConfigError', true)
        window?.[eWechatSdkName]?.config({
          beta: true, // 必须这么写，否则wx.invoke调用形式的jsapi会有问题
          debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
          appId: wxConfig.appId, // 必填，企业微信的corpID
          timestamp: wxConfig.timestamp, // 必填，生成签名的时间戳
          nonceStr: wxConfig.nonceStr, // 必填，生成签名的随机串
          signature: wxConfig.signature, // 必填，签名，见 附录-JS-SDK使用权限签名算法
          jsApiList: [...store.state?.eWechat?.defaultJsApiList, ...jsApiList] // 必填，需要使用的JS接口列表，凡是要调用的接口都需要传进来
        })
        window?.[eWechatSdkName]?.ready(() => {
          resolve()
        })
        window?.[eWechatSdkName]?.error(function(error) {
          uni.showToast({
            title: 'config信息验证失败',
            icon: 'none'
          })
          reject(error)
        })
      } else {
        reject()
      }
    })
  })
}